
#ifndef ExportParameterVisitorUtils_HEADER_H 
#define ExportParameterVisitorUtils_HEADER_H

#include <list>

#include "../ast/SQLExpr.h"
#include "../ast/expr/SQLBetweenExpr.h"
#include "../ast/expr/SQLBinaryOpExpr.h"
#include "../ast/expr/SQLCharExpr.h"
#include "../ast/expr/SQLLiteralExpr.h"
#include "../ast/expr/SQLNumericLiteralExpr.h"
#include "../ast/expr/SQLVariantRefExpr.h"

//#include "../dialect/mysql/ast/expr/MySqlBooleanExpr.h"

class ExportParameterVisitor;
class DbType;

class ExportParameterVisitorUtils {

	private:
		//SQLVariantRefExpr *theRef;

	public:
		static ExportParameterVisitor* createExportParameterVisitor(string_ptr  out, DbType_ptr   dbType);
		static BOOL_ptr exportParamterAndAccept(Object_list_ptr parameters, SQLExpr_list_ptr list);

		static SQLExpr_ptr exportParameter(Object_list_ptr parameters, SQLExpr_ptr param);

		static void exportParameter(Object_list_ptr parameters, SQLBinaryOpExpr *x);

		static void exportParameter(Object_list_ptr parameters, SQLBetweenExpr *x);


		// static BOOL_ptr exportParamterAndAccept(int &size, std::list<SQLExpr_ptr > &list);

		// static SQLExpr_ptr exportParameter(int &size, SQLExpr_ptr param);

		// static void exportParameter(int &size, SQLBinaryOpExpr *x);

		// static void exportParameter(int &size, SQLBetweenExpr *x);



};
#endif

